কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) |
350
350

কনস্ট্রাক্টর (Constructor) এবং ডেস্ট্রাক্টর (Destructor) হলো C++ ক্লাসের বিশেষ ফাংশন। এদের মূল কাজ হলো অবজেক্ট তৈরি ও ধ্বংসের সময় নির্দিষ্ট কার্য সম্পাদন করা।

কনস্ট্রাক্টর (Constructor)

কনস্ট্রাক্টর হলো একটি বিশেষ ধরনের ফাংশন, যা ক্লাসের অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের ডেটা মেম্বার ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।

কনস্ট্রাক্টরের বৈশিষ্ট্য

  1. নাম: কনস্ট্রাক্টরের নাম অবশ্যই ক্লাসের নামের মতো হতে হবে।
  2. রিটার্ন টাইপ নেই: কনস্ট্রাক্টরের কোনো রিটার্ন টাইপ থাকে না, এমনকি void ও নয়।
  3. অটোমেটিক কল: অবজেক্ট তৈরি করার সময় কনস্ট্রাক্টর স্বয়ংক্রিয়ভাবে কল হয়।
  4. ওভারলোডিং সমর্থন: C++ এ কনস্ট্রাক্টর ওভারলোডিং সম্ভব, অর্থাৎ একই ক্লাসে একাধিক কনস্ট্রাক্টর থাকতে পারে, যদি তাদের প্যারামিটার আলাদা হয়।

কনস্ট্রাক্টরের প্রকারভেদ

  1. ডিফল্ট কনস্ট্রাক্টর: কোনো প্যারামিটার ছাড়া কনস্ট্রাক্টর তৈরি করা হয়।
  2. প্যারামিটারাইজড কনস্ট্রাক্টর: এক বা একাধিক প্যারামিটার সহ কনস্ট্রাক্টর তৈরি করা হয়।
  3. কপি কনস্ট্রাক্টর: একটি অবজেক্ট থেকে আরেকটি অবজেক্ট তৈরি করতে ব্যবহৃত হয়।

উদাহরণ: ডিফল্ট এবং প্যারামিটারাইজড কনস্ট্রাক্টর

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    // ডিফল্ট কনস্ট্রাক্টর
    Car() {
        brand = "Unknown";
        year = 0;
    }

    // প্যারামিটারাইজড কনস্ট্রাক্টর
    Car(string b, int y) {
        brand = b;
        year = y;
    }

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    Car car1; // ডিফল্ট কনস্ট্রাক্টর কল হবে
    Car car2("Toyota", 2020); // প্যারামিটারাইজড কনস্ট্রাক্টর কল হবে

    car1.displayInfo(); // Output: Brand: Unknown, Year: 0
    car2.displayInfo(); // Output: Brand: Toyota, Year: 2020

    return 0;
}

বর্ণনা:

  • এখানে Car ক্লাসে দুটি কনস্ট্রাক্টর আছে। Car() হলো ডিফল্ট কনস্ট্রাক্টর, যা car1 অবজেক্ট তৈরি করার সময় কল হয়েছে এবং Car(string b, int y) হলো প্যারামিটারাইজড কনস্ট্রাক্টর, যা car2 অবজেক্ট তৈরি করার সময় কল হয়েছে।

ডেস্ট্রাক্টর (Destructor)

ডেস্ট্রাক্টর হলো একটি বিশেষ ফাংশন, যা অবজেক্ট ধ্বংস হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি অবজেক্টের মেমোরি মুক্ত করতে বা ক্লিনআপ কার্য সম্পাদন করতে ব্যবহৃত হয়। C++ এ প্রতিটি ক্লাসের কেবলমাত্র একটি ডেস্ট্রাক্টর থাকতে পারে।

ডেস্ট্রাক্টরের বৈশিষ্ট্য

  1. নাম: ডেস্ট্রাক্টরের নাম ক্লাসের নামের মতো হয়, তবে এর আগে ~ (টিল্ডা) চিহ্ন থাকে।
  2. রিটার্ন টাইপ নেই: ডেস্ট্রাক্টরের কোনো রিটার্ন টাইপ থাকে না।
  3. প্যারামিটার নেই: C++ এ ডেস্ট্রাক্টর কখনো প্যারামিটার গ্রহণ করতে পারে না।
  4. স্বয়ংক্রিয় কল: অবজেক্টের জীবনকাল শেষ হওয়ার সময় ডেস্ট্রাক্টর স্বয়ংক্রিয়ভাবে কল হয়।

ডেস্ট্রাক্টরের উদাহরণ

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    // প্যারামিটারাইজড কনস্ট্রাক্টর
    Car(string b, int y) {
        brand = b;
        year = y;
        cout << "Constructor called for " << brand << endl;
    }

    // ডেস্ট্রাক্টর
    ~Car() {
        cout << "Destructor called for " << brand << endl;
    }

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    Car car1("Toyota", 2020);
    Car car2("Honda", 2019);

    car1.displayInfo();
    car2.displayInfo();

    return 0;
}

আউটপুট:

Constructor called for Toyota
Constructor called for Honda
Brand: Toyota, Year: 2020
Brand: Honda, Year: 2019
Destructor called for Honda
Destructor called for Toyota

বর্ণনা:

  • এখানে Car ক্লাসে একটি ডেস্ট্রাক্টর ~Car() তৈরি করা হয়েছে, যা অবজেক্ট ধ্বংস হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়।
  • যখন প্রোগ্রাম শেষ হয়, তখন car2 এবং car1 অবজেক্টের জন্য ডেস্ট্রাক্টর কল হয় এবং "Destructor called for Honda" এবং "Destructor called for Toyota" মেসেজ প্রিন্ট হয়।

কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের পার্থক্য

বৈশিষ্ট্যকনস্ট্রাক্টরডেস্ট্রাক্টর
কাজঅবজেক্ট তৈরি করার সময় ইনিশিয়ালাইজেশন করাঅবজেক্ট ধ্বংস করার সময় ক্লিনআপ করা
নামক্লাসের নামের মতোক্লাসের নামের আগে ~ চিহ্ন থাকে
রিটার্ন টাইপরিটার্ন টাইপ নেইরিটার্ন টাইপ নেই
প্যারামিটারপ্যারামিটার থাকতে পারেপ্যারামিটার থাকতে পারে না
ওভারলোডিং সমর্থনওভারলোডিং সমর্থন করেওভারলোডিং সমর্থন করে না

কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর কেন ব্যবহার করা হয়?

  1. অবজেক্ট ইনিশিয়ালাইজেশন: কনস্ট্রাক্টর ব্যবহার করে অবজেক্ট তৈরি হওয়ার সাথে সাথেই ডেটা মেম্বার ইনিশিয়ালাইজ করা যায়।
  2. মেমোরি ম্যানেজমেন্ট: কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর ব্যবহার করে ডাইনামিক মেমোরি বরাদ্দ এবং মুক্ত করা যায়।
  3. রিসোর্স ম্যানেজমেন্ট: প্রোগ্রামে ব্যবহৃত বিভিন্ন রিসোর্স যেমন ফাইল, ডেটাবেস কানেকশন ইত্যাদি সঠিক সময়ে তৈরি এবং মুক্ত করার জন্য কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর ব্যবহৃত হয়।
  4. কোড রিডেবিলিটি: অবজেক্ট তৈরি এবং ধ্বংসের সময় নির্দিষ্ট কাজ পরিচালনা করতে আলাদা ফাংশন লেখার পরিবর্তে কনস্ট্রাক্টর ও ডেস্ট্রাক্টর ব্যবহার করে কোডকে আরও সংক্ষিপ্ত ও পরিষ্কার করা যায়।

সারসংক্ষেপ

  • কনস্ট্রাক্টর অবজেক্ট তৈরি হওয়ার সময় ইনিশিয়ালাইজেশন করে এবং একাধিক কনস্ট্রাক্টর ওভারলোড করা সম্ভব।
  • ডেস্ট্রাক্টর অবজেক্ট ধ্বংসের সময় ক্লিনআপ বা মেমোরি মুক্ত করে এবং একটিই ডেস্ট্রাক্টর থাকে।
  • কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর প্রোগ্রামের মেমোরি এবং রিসোর্স ব্যবস্থাপনার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে, যা প্রোগ্রামকে কার্যকর ও সুশৃঙ্খল করে তোলে।

 

 

 

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion